In [ ]:
 

Meha Ahmed homework 4¶

In [11]:
import pandas as pd

import numpy as np

import plotly.express as px

import plotly.graph_objects as go

url = "https://raw.githubusercontent.com/bcaffo/MRIcloudT1volumetrics/master/inst/extdata/multilevel_lookup_table.txt"

multilevel_lookup = pd.read_csv(url, sep = "\t").drop(['Level5'], axis = 1)

multilevel_lookup = multilevel_lookup.rename(columns = {

    "modify"   : "roi",

    "modify.1" : "level4",

    "modify.2" : "level3",

    "modify.3" : "level2",

    "modify.4" : "level1"})

multilevel_lookup = multilevel_lookup[['roi', 'level4', 'level3', 'level2', 'level1']]
In [13]:
id = 127
subjectData = pd.read_csv("https://raw.githubusercontent.com/bcaffo/ds4bme_intro/master/data/kirby21.csv")
subjectData = subjectData.loc[(subjectData.type == 1) & (subjectData.level == 5) & (subjectData.id == id)]
subjectData = subjectData[['roi', 'volume']]
subjectData = pd.merge(subjectData, multilevel_lookup, on = "roi")
subjectData = subjectData.assign(icv = "ICV")
subjectData = subjectData.assign(comp = subjectData.volume / np.sum(subjectData.volume))
In [14]:
summary = subjectData[["icv", "level1", "level2"]].groupby(["icv", "level1", "level2"], as_index = False).mean()
summaryvol1 = subjectData[["icv", "level1", "volume"]].groupby(["icv", "level1"], as_index = False).sum()
summaryvol2 = subjectData[["icv", "level1", "level2", "volume"]].groupby(["icv", "level1", "level2"], as_index = False).sum()
unique_summary = pd.unique(summary.values.ravel())
unique_summary = unique_summary.tolist()
In [15]:
fig = go.Figure(data=[go.Sankey(
    # Define nodes
    node = dict(
      pad = 15,
      thickness = 15,
      line = dict(color = "black", width = 0.5),
      label =  unique_summary
    ),
    # Add links
    link = dict(
      source =  [0, 1, 1, 1, 1, 0, 6, 6, 0, 9, 9, 0, 12, 12, 0, 15, 15, 0, 18, 18, 0, 21, 21, 21, 0, 25, 25, 25],
      target =  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28],
      value =  [109787, 33975, 30018, 44979, 815, 11817, 5475, 6342, 11560, 5188, 6372, 10271, 4945, 5326, 159411, 79498, 79913, 4975, 2403, 2572, 531153, 276982, 12381, 241790, 534444, 282874, 13077, 247493],
      label =  unique_summary
))])
fig.update_layout(title_text="MRICloud Sankey Diagram", font_size=10)
fig.show()
In [ ]: